package com.iring.dao.common;

import java.util.Date;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import com.iring.domain.common.CallLog;


/**
 * 查询通话记录dao
 *
 * @author wanggan
 */
public interface CallLogDao extends JpaRepository<CallLog, Integer> {

    /**
     * 查询cdr
     *
     * @param mac
     *            mac
     * @param startTime
     *            开始时间
     * @param endTime
     *            结束时间
     * @param pageable
     *            分页参数
     * @return    通话记录
     */
    Page<CallLog> findByMacAndStartTimeBetween(String mac, Date startTime, Date endTime,
                                               Pageable pageable);

    /**
     * 通过主叫号码进行查询
     *
     * @param mac
     *            mac
     * @param startTime
     *            开始时间
     * @param endTime
     *            结束时间
     * @param src
     *            主叫
     * @param pageable
     *            分页参数
     * @return    通话记录
     */
    Page<CallLog> findByMacAndStartTimeBetweenAndSrcContaining(String mac, Date startTime,
                                                               Date endTime, String src, Pageable pageable);

    /**
     * 通过被叫号码进行查询
     *
     * @param mac
     *            mac
     * @param startTime
     *            开始时间
     * @param endTime
     *            结束时间
     * @param dst
     *            被叫
     * @param pageable
     *            分页参数
     * @return    通话记录
     */
    Page<CallLog> findByMacAndStartTimeBetweenAndDstContaining(String mac, Date startTime,
                                                               Date endTime, String dst, Pageable pageable);

    /**
     * 通过src和dst联合查询
     *
     * @param mac
     *            mac
     * @param startTime
     *            开始时间
     * @param endTime
     *            结束时间
     * @param src
     *            主叫
     * @param dst
     *            被叫
     * @param pageable
     *            分页参数
     * @return    通话记录
     */
    Page<CallLog> findByMacAndStartTimeBetweenAndSrcContainingAndDstContaining(String mac,
                                                                               Date startTime, Date endTime, String src, String dst, Pageable pageable);
}
